//===============================
//  功能 ：备注 
//  作者 ：上中野辅亚瑟王 
//  创建时间 ：2023-06-21  16-37-44 
//  Unity版本  ：2019.4.35f1 
//  变更时间 :  2023-06-21  16-37-44 
//===============================





using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;

namespace ZS.U3D.BASE.Runtime.Extension
{
    public static partial class AssemblyExtension
    {
        //public static List<Type> GetTypes(this Assembly assembly, Predicate<Type> predicate)
        //{
        //    var result = new List<Type>();
        //    var types = assembly.GetTypes();
        //    foreach (var type in types)
        //    {
        //        if (predicate(type))
        //        {
        //            result.Add(type);
        //        }
        //    }

        //    return result;
        //}

        //public static List<Type> GetTypesWithAttribute<T>(this Assembly assembly) where T : Attribute
        //{
        //    var result = new List<Type>();
        //    var types = assembly.GetTypes();
        //    foreach (var type in types)
        //    {
        //        var attributes = type.GetAttributes<T>();
        //        if (attributes != null && attributes.Length > 0)
        //        {
        //            result.Add(type);
        //        }
        //    }

        //    return result;
        //}

        //public static List<Type> GetTypesWithAttribute<T>(this Assembly assembly, Predicate<Type> predicate) where T : Attribute
        //{
        //    var result = new List<Type>();
        //    var types = assembly.GetTypes();
        //    foreach (var type in types)
        //    {
        //        var attributes = type.GetAttributes<T>();
        //        if (attributes != null && attributes.Length > 0 && predicate(type))
        //        {
        //            result.Add(type);
        //        }
        //    }

        //    return result;
        //}

        //public static Type GetTypeWithAttribute<T>(this Assembly assembly) where T : Attribute
        //{
        //    var types = assembly.GetTypes();
        //    foreach (var type in types)
        //    {
        //        var attributes = type.GetAttributes<T>();
        //        if (attributes != null && attributes.Length > 0)
        //        {
        //            return type;
        //        }
        //    }

        //    return null;
        //}
    }
}
